package leetcode;

import java.util.Arrays;

public class LeetCode27 {
    public int removeElement(int[] nums, int val) {
        for (int i = 0; i < nums.length; i++) {

        }
        return 0;
    }


    //------------------------------------------------------------------

    //元素的顺序可以改变
    //会产生一个逆序的情况  移动元素较少的情况
    public int removeElement1(int[] nums, int val) {
        int i = 0;
        int n = nums.length;
        while (i < n) {
            if (nums[i] == val) {
                nums[i] = nums[n - 1];
                // reduce array size by one
                n--;
            } else {
                i++;
            }
        }
        return n;
    }

    //保持原有顺序 移动元素较多 且保证顺序不发生变化
    public int removeElement2(int[] nums, int val) {
        int i = -1;
        //快指针
        for (int j = 0; j < nums.length; j++) {
            if (nums[j] != val) {
                nums[++i] = nums[j];
            }
        }
        return i + 1;
    }
}
